{{title 'Services'}}
<EventSource @src={{items}} />
{{#let (selectable-key-values
    (array "Name:asc" "A to Z")
    (array "Name:desc" "Z to A")
    (array "Status:asc" "Unhealthy to Healthy")
    (array "Status:desc" "Healthy to Unhealthy")
      selected=sortBy
  )
  as |sort|
}}
    <AppView @class="service list">
      <BlockSlot @name="notification" as |status type|>
        {{partial 'dc/services/notifications'}}
      </BlockSlot>
      <BlockSlot @name="header">
          <h1>
              Services <em>{{format-number services.length}} total</em>
          </h1>
          <label for="toolbar-toggle"></label>
      </BlockSlot>
      <BlockSlot @name="toolbar">
        {{#if (gt services.length 0) }}
          <SearchBar
            @value={{search}}
            @onsearch={{action (mut search) value="target.value"}}
            @secondary="sort"
            @selected={{sort.selected}}
            @options={{sort.items}}
            @onchange={{action (mut sortBy) value='target.selected.key'}}
          />
        {{/if}}
      </BlockSlot>
      <BlockSlot @name="content">
{{#let (sort-by (comparator 'service' sort.selected.key) services) as |sorted|}}
        <ChangeableSet @dispatcher={{searchable 'service' sorted}} @terms={{search}}>
          <BlockSlot @name="set" as |filtered|>
            <ConsulServiceList @items={{filtered}} @proxies={{proxies}}/>
          </BlockSlot>
          <BlockSlot @name="empty">
            <EmptyState @allowLogin={{true}}>
              <BlockSlot @name="header">
                <h2>
                  {{#if (gt services.length 0)}}
                    No services found
                  {{else}}
                    Welcome to Services
                  {{/if}}
                </h2>
              </BlockSlot>
              <BlockSlot @name="body">
                <p>
                  {{#if (gt services.length 0)}}
                    No services where found matching that search, or you may not have access to view the services you are searching for.
                  {{else}}
                    There don't seem to be any registered services, or you may not have access to view services yet.
                  {{/if}}
                </p>
              </BlockSlot>
              <BlockSlot @name="actions">
                <li class="docs-link">
                  <a href="{{env 'CONSUL_DOCS_URL'}}/commands/services" rel="noopener noreferrer" target="_blank">Documentation on services</a>
                </li>
                <li class="learn-link">
                  <a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/services" rel="noopener noreferrer" target="_blank">Read the guide</a>
                </li>
              </BlockSlot>
            </EmptyState>
          </BlockSlot>
        </ChangeableSet>
      {{/let}}
      </BlockSlot>
    </AppView>
{{/let}}
